package com.renne.ai.dbcmcp.mapper;

import com.renne.ai.dbcmcp.domain.SysTableColumnMeta;
import com.renne.ai.dbcmcp.domain.SysTableKeyColumnUsage;
import com.renne.ai.dbcmcp.domain.SysTableMeta;
import com.renne.ai.dbcmcp.domain.SysTableUniqueMeta;

import java.util.List;

public interface DBQueryMapper {

    /**
     * 查询所有表名及注释
     *
     * @param dbName 数据库名
     * @return 表名及注释信息
     */
    List<SysTableMeta> getTableNameAndComment(String dbType, String dbName);

    /**
     * 查询指定表的字段详情
     * @param dbName 数据库名
     * @param tableName 表名字
     * @return 表字段信息
     */
    List<SysTableColumnMeta> getTableColumnDetail(String dbType, String dbName, String tableName);

    /**
     * 查询指定表的外键详情
     *
     * @param dbName 数据库名
     * @param tableName 表名字
     * @return 表约束信息
     */
    List<SysTableKeyColumnUsage> getTableForeignKeys(String dbType, String dbName, String tableName);

    /**
     * 查询指定表的索引详情
     *
     * @param dbName 数据库名
     * @param tableName 表名字
     * @return 表索引信息
     */
    List<SysTableUniqueMeta> getTableIndexes(String dbType, String dbName, String tableName);

    /**
     * 查询指定表的行数
     *
     * @param tableName 表名字
     * @return 表行数
     */
    int getTableRowCount(String dbType, String tableName);

    /**
     * 查询指定数据库引擎
     *
     * @param dbName 数据库名
     * @return 数据库引擎
     */
    String getDatabaseEngine(String dbType, String dbName, String tableName);
}
